<?php namespace Common\Model;
//	调用核心包里面的Model类
	use \Hdphp\Model\Model;
	
	
//	继承与核心包的Model类，核心包的的东西最好不要改，只要继承，修改本脚本就好
	class Cate extends Model{
//		定义成员属性，看是需要哪个表，固定写法
		protected $table = 'snshop_categroy';
		
		
//		关于验证的成员属性,自动验证的参数,从手册中选取验证方法
		protected $validate = array(
//			array('字段名','验证方法','方法说明（告知用户）',验证条件,验证时间),
			array('cname','required','分类11名称不能为空',3,3),
//      这里可以配置对所有的post参数进行验证
		);
		
//getAll      获取所有数据
//one         获取一条数据
//store       保存数据
//edit        更新数据
//del         删除数据


		
		
//		添加数据
//		验证方法store,要定义一个成员属性，这是固定写法，也可以说是框架内部这样定义的
//		要定义一个 public 属性的，不能是 protected,注意
		public function store(){
//			var_dump($_POST);die;
//			echo 'store';die;
//			就两条代码，重要的是理解，这也是框架的好处
//			框架 $this -> create() 就是自动将post体提交的数据与数据库比对，如果字段相同，就按成员属性 protected $validate 里面的验证规则去验证，没有的或者不匹配数据库字段的，直接删除，所以要注意前端name 里面的值要跟相对应的数据表字段名相同
			if(!$this -> create()){
				return FALSE;
			}else{
//				var_dump($this -> data);die;
//				$this -> add() 这是继承父类 model 类里面的方法，自动给当前表插入一条数据，插入数据所需的值就是经过验证的字段，所以必须配套使用
				return $this -> add();
			}
			
		}

		

		
		
//		更新数据
		public function edit(){
//			将post提交数据通过create 处理，然后注入数据库进行修改
//			因为有主键seve（）
			if(!$this -> create()) return FALSE;
//				var_dump($this -> data);die;
//			使用框架内置方法save方法,post提交数据必须有主键！！！
			return $this -> save();

	
		}
	
		/**
		 *获取不是当前类或当前类的自己的所有数据
		 *
		 * 参数1:当前分类的cid 
		 * 返回的结果:最终查询重组后的不包含自己和子集的分类数据
		 */		
		public function getNoMy($cid){
//			echo 'getnomy';die;
//			1.获取当前分类的所有子集
//				1.获取当前分类表中的所有分类数据
			$cateData=$this->get();

//				2.获取子集
//				返回所有子集的id数组
			$cids=$this->getSon($cateData,$cid);
//			var_dump($cids);die;
			
//			2.将当前分类压入
			$cids[]=$cid;
//			var_dump($cids);die;
//			将数组转字符串
			$cids=implode(',', $cids);
//			var_dump($cids);die;
//			查找所有分类中，不存在于cids中的数据
//			select * from category where cid not in ("2,6,7");
			$data=$this->where("cid not in (".$cids.")")->get();
//			var_dump($data);die;
			
//			树形结构处理
			$data=Data::tree($data,'cname');

			return $data;
		}
	
	
	
	
		
		
//		获取子集方法
		/**
		 * 获取子集的方法
		 * 参数1:所有分类数据,
		 * 参数2:当前要查找的分类的id
		 * 结果:分类的子集数组
		 */
		public function getSon($data,$cid){
			$temp=array();
//			传入2
//			找2的子集//$v['pid']==2
			foreach($data as $k=>$v){
				if($v['pid']==$cid){
//					var_dump($v);die;
//					将找到的$v这个分类的主键，压入temp临时变量中存储
					$temp[]=$v['cid'];
//					将当前压入的$temp临时变量和递归条件返回的数组进行合并
					$temp=array_merge($temp,$this->getSon($data,$v['cid']));
				}
			}
			return $temp;
		}
		
		
		
		
	}
	
	
	
	
	
	
	
	
	
	
	
	?>